Solid state drives (SSDs) (e.g., flash drives) are data storage devices that use storage integrated circuit (IC), namely solid state memory components, such as NAND Flash, assemblies as memory to store data. The solid state memory components may have a higher capacity than random access memories (RAM) and higher performance speed than hard disk drives (HDDs). However, the solid state memory components have some inherent limitations. For example, NAND Flash may be limited to operate on a block basis (e.g., erase blocks). That is, the solid state memory components commonly have different resolution capabilities with respect to read commands, write (program) commands, and delete (erase) commands. To serve arbitrary requests from host computer, an SSD firmware is required to operate the solid state memory components under these inherent limitations. For example, SSD firmware can read from NAND Flash on a per readable section basis, program (write) the NAND Flash on a per page basis, and erase data from the NAND Flash on a per erase block basis. A “readable section”, a “page”, and an “erase block” are all units of physical memory space, which correspond to the resolutions of the input/output (I/O) operations on the solid state memory components.
The size of a readable section, a page, and an erase block may vary from device to device. In some cases, a readable section is the same size as a page. In one example, a readable section is a smaller unit of memory space compared to a page, and a page is a smaller unit of memory space compared to an erase block. Each erase block in an SSD has a limited number of program/erase (P/E) cycles before it wears out physically. An erase block, once written, would then need to be entirely erased before any page in the erase block can be changed. That is, a physical page, once written with data, cannot be re-written until the entire erase block containing the physical page is deleted. Accordingly, file modification requests often trigger re-mapping operations in the SSD. A large number of program/erase operations would increase the latency when reading data from the SSDs. As part of garbage collection, a large number of read-modify-write operations may need to be performed to free enough spare pages and erase blocks. An increase in the number of read-modify-write operations in turn can increase the latency for the SSD. Because of these inherent limitations in a SSD, the full performance potential of SSDs remains unrealized.
A host computer can maintain a filesystem to keep track of data files stored in its SSDs. In a conventional data storage system, an SSD itself is not aware of data files it stores and the host computer is not aware of how the SSD controller is storing the data files. In this setup, the usage of the physical blocks is hidden from the host computer.
The figures depict various embodiments of this disclosure for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of embodiments described herein.